home *** CD-ROM | disk | FTP | other *** search
/ Macintosh Compilation 1 / Macintosh Compilation CD Number 1 (December 1995).iso / MultiMedia / MM Director 4.0.4 / Lingo Issues < prev    next >
Text File  |  1994-12-13  |  9KB  |  188 lines

  1. Director 4.04 for Macintosh
  2. November 1994
  3.  
  4. LINGO ISSUES
  5.  
  6. The searchPath is a function that can be both tested and set. The searchPath is 
  7. a regular list, so you can append, add, addAt, deleteAt, or setAt just like with 
  8. other lists. For example:
  9.         Windows: set the searchPath to ["c:\myDrive\myDirect\", "d:\myCDROM\aDirect\"]
  10.         Macintosh: set the searchPath to [ "myDrive:myFolder:", "myCDROM:aFolder:"]
  11. Trailing colons and backslashes are allowed but not necessary. The examples 
  12. look like this if you leave out the trailing colons and backslashes:
  13.         Windows: set the searchPath to ["c:\myDrive\myDirect", "d:\myCDROM\aDirect"]
  14.         Macintosh: set the searchPath to [ "myDrive:myFolder", "myCROM:aFolder"]
  15.  
  16. When creating cursors from cast members, you can now use bitmapped cast 
  17. members smaller than 16x16. When using a bitmap larger than 16x16, the top 
  18. left portion of the cast member is used for the cursor. The registration point is 
  19. now properly used as the hot spot of the cursor.
  20.  
  21. When creating a movie-in-a-window, set the windowType to 49 for a floating 
  22. palette windoid. Other windowType values are possible, but experiment with 
  23. caution as some modal windows can be exited only by restarting your 
  24. computer.
  25.  
  26. The function getNthFileNameInFolder() will find files with the "invisible" 
  27. bit set. Director movie files must be visible.
  28.  
  29. "When timeout" doesn't function while Lingo is in a repeat loop, even 
  30. though "the timeoutLapsed" returns the proper value if inside that loop. This 
  31. is because Lingo repeat loops are optimized for fastest processing, and in 
  32. doing so will defer outside events. Use a "go to the frame" score loop, 
  33. incrementing a counter each time.
  34.  
  35. When you branch to another movie using Director 4.0, the contents of the 
  36. actorList are not cleared, even after using clearGlobals. Consequently, you 
  37. may find unpredictable behavior between scripts in the new movie_sprites 
  38. may move around and so on. So when starting the next movie, set the 
  39. actorList to an empty list by using the statement:
  40.        set the actorList = []
  41.  
  42. Writing parent scripts within score or cast member scripts will keep these 
  43. handlers private to objects that are birthed from these scripts. If a movie script 
  44. is used to hold a parent script instead, then these handlers would be accessible 
  45. to anything in the movie that calls that handler, which is generally not 
  46. desired. It is best to use score scripts to hold parent scripts.
  47.  
  48. The ancestor property of an object can be changed on the fly. This allows you 
  49. to radically change behaviors and properties with a single command.
  50.  
  51. Factories are included only for backward-compatibility with pre-existing 
  52. projects. If you need to edit them in Director 4.0, use the Recompile All 
  53. Scripts menu command to ensure that your edited factories compile fully. 
  54. Generally, converting your object-oriented code to parent scripts will give 
  55. more power and reliability.
  56.  
  57. Lists can most quickly be initialized by putting them right into a handler that 
  58. is called at startup. Or, if a text field contains a bracketed list, you can use the 
  59. Lingo:
  60.         set myList = value (field "myfield")
  61.  
  62. To update changes to the regPoint of a cast member, or to update changes to 
  63. an image after relinking with the fileName property, use "set the picture of 
  64. myCast = the picture of myCast".
  65.  
  66. Doing a rollOver or cursor of sprite operation on a sprite that has been 
  67. removed will reflect that channel's last position on stage. Either refrain from 
  68. testing rollovers on sprites that are not there or set the final position for that 
  69. sprite up above the menu bar before deleting it, so that the channel's score 
  70. information is changed.
  71.  
  72. Sending messages: A mouseUp message can be sent to a button named 
  73. "myButton" by:
  74.         mouseUp (script "myButton")
  75. You can send any message to any script that can handle that message using 
  76. this technique. Cast member scripts can also have private properties, which 
  77. are local variables that persist across time, as in:
  78.     property numberOfClicks
  79.          on mouseUp
  80.           if the numberOfClicks of (script "myButton") >2 then
  81.               go to frame "try again"
  82.           end if
  83.           end mouseUp
  84.  
  85. If play commands are issued and matching play done commands are not, 
  86. memory will be used up since the calling script won't get deleted. It's safer to 
  87. avoid play commands if you can't guarantee that matching play done 
  88. commands will eventually be issued. Use a global list to remember what 
  89. movie to return to instead. 
  90.  
  91. The play movie command is not fully supported from inside a tell command. 
  92. Instead, when play movie is issued from inside a tell command, it will be 
  93. treated like a go command.
  94.  
  95. Using uninitialized local variables within a do command triggers a compile 
  96. error in Lingo. So you must initialize all local variables that you intend to use 
  97. before the do command. If you will not know the names of your variables 
  98. until runtime, then you can access them from a known global property list.
  99.  
  100. The searchPaths global property (not a function) is a list of paths that Director 
  101. searches. Each item in the list is a fully qualified pathname of directories as 
  102. they appear on the current platform at run time. To add items to the list, use 
  103. the add or addAt commands. To delete items from the list, use the delete or 
  104. deleteAt commands. For example, imagine you want to tell Director to look for 
  105. files inside a directory called Sounds, which is located in the same directory as 
  106. the current Director movie.  You'd execute the following lines of Lingo in order to 
  107. add the Sounds directory to the searchPaths:
  108.      put the moviePath & "Sounds" into soundsPath
  109.      add the searchPaths, soundsPath
  110.  
  111. Setting very many paths into the searchPath property slows searches. To 
  112. speed searching, limit this list.
  113.  
  114. When movies are protected or made into projectors, they lose their scriptText 
  115. property, so this can no longer be read, although it can still be set. 
  116.  
  117.  
  118. LINGO DICTIONARY CORRECTIONS 
  119.  
  120. The syntax for importFileInto is incorrectly listed in the Lingo Dictionary. The 
  121. correct syntax is:
  122.     importFileInto  cast "castname", "filename"
  123. where "castname" is the original cast member's name and "filename" is the 
  124. new cast member (imported file) name.
  125.  
  126. The pictureP (picture predicate) function does not work directly on a cast 
  127. member as described in the Lingo Dictionary, but actually on the picture 
  128. property of a cast member. If you set "temp = the picture of cast 1", then 
  129. pictureP(temp) will evaluate to TRUE.
  130.  
  131. The Lingo Dictionary says that the preload of cast n determines whether the 
  132. digital video cast member has been preloaded into memory. It should say that 
  133. it determines whether the digital video cast member is able to preload into 
  134. memory. Setting preload to 1 is the same as checking the Enable Preload to 
  135. RAM checkbox in the Digital Video Cast Member Info dialog box.
  136.  
  137. The Lingo command deleteOne was omitted from the Lingo Dictionary. This 
  138. command deletes a value from a linear or property list. Its correct syntax is 
  139. deleteOne aList, aValue. For example:
  140.         set x = [ 10, 3, 40 ]
  141.         deleteOne x, 3
  142.         put x --> [ 10, 40 ]
  143.         set p = [ name: "JT", age: 0 ]
  144.         deleteOne p, 0
  145.         put p --> [ name: "JT" ]
  146.  
  147. The stepFrame handler is found in the Lingo Dictionary within the definition 
  148. for the actorList property, as this is the only time that a stepFrame handler 
  149. would be used. It is best not to delete an object from the actorList within the 
  150. object's stepFrame handler or handlers called by the object's stepFrame 
  151. handler. If the contents of the actorList change while the actorList is still being 
  152. evaluated, an error can result. Instead, if you need to delete an object 
  153. depending on the results of a stepFrame operation, add this object into a 
  154. separate global list whose contents can then be evaluated and removed from 
  155. the actorList during a separate exitFrame or other handler.
  156.  
  157. Property list strings are in fact case sensitive. 
  158.  
  159. How Lingo unload/preload/loaded applies to cast member types
  160. In most cases, cast members must be loaded into memory when they are in 
  161. use and can be unloaded afterwards. Starting with Director 4.0.4, preloading a 
  162. film loop will preload cast members used in the film loop. The Lingo 
  163. construct "the loaded of cast" tells whether a cast member is currently loaded. 
  164. Exceptions to this rule are indicated with an asterisk (*) in the following table:
  165.  
  166. Type                            Loaded                        Loaded by             Always                 Unloaded by
  167.                                     when used                    PRELOAD                 loaded                        UNLOAD        
  168. bitmap                     yes                                        yes                                 no                                 yes
  169. film loop                yes                                        yes                              no                                        yes
  170. text                                yes                                        yes                                no                                        yes
  171. palette           yes                        yes                  no                      yes
  172. PICT                             yes                                        yes                                no                                        yes
  173. sound                          yes                               yes                              no                                        yes
  174. button                        yes                                        yes                                no                                        yes
  175. shape                         no*                                        no*                                yes*                                no*
  176. movie                         yes*                                    yes*                            no*                                    no*
  177. digital video     no*                                     yes*                             no*                                 yes*
  178. script                         no*                                      no*                              yes*                             no*
  179.  
  180. What this means:
  181. - Shape and script cast members are always loaded.
  182. - Movie cast members are never unloaded.
  183. - Digital video cast members can be preloaded and unloaded, but this is 
  184. independent of whether or not they are being used. A loaded digital video 
  185. cast member is faster than one that is not loaded.
  186.  
  187.  
  188.